/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package artaza.controlador;

/**
 *
 * @author AGM
 */
import artaza.persistencia.*;
import artaza.service.*;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;
import java.util.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Required;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;


@Controller
public class TrabajaController {

    private TrabajaService trabajaService;
    private FincaService fincaService;
    private CamareroService camareroService;

    @Autowired
    @Required
    public void setTrabajaService(TrabajaService trabajaService) {
        this.trabajaService =  trabajaService;
    }

    @Autowired
    @Required
    public void setFincaService(FincaService fincaService) {
        this.fincaService =  fincaService;
    }

    @Autowired
    @Required
    public void setCamareroService(CamareroService camareroService) {
        this.camareroService =  camareroService;
    }

    @RequestMapping(value = "/listadotrabajo", method = RequestMethod.GET)
    public String doShowTrabaja(Model model) {

        final Collection<Trabaja> trabajos =  trabajaService.getAlltrabajos();
        model.addAttribute("trabajos", trabajos);
        return "/listadotrabajo";
    }

    @RequestMapping(value = "/crear_trabajo", method = RequestMethod.POST)
    public String doCrearTrabaja(
            @RequestParam("nombre") String nombre,
            @RequestParam("fecha") String fecha,
           // @RequestParam("finca") Finca finca,
            Model model) {

	if (nombre.length() == 0 || fecha.length()==0) {
            return "redirect:error.html";
	}

        final Trabaja t = new Trabaja ();
        t.setNombre(nombre);
        t.setFecha(fecha);
        //t.setFinca(finca);
        t.setHoras(0);
        trabajaService.create(t);
        return "redirect:listadotrabajo";
    }


   @RequestMapping(value = "/anadir_finca", method = RequestMethod.GET)
   public String doAñadirFinca(@RequestParam("id_trabaja") String id_trabaja,
                                @RequestParam("nombref") String nombref,
                                Model model) {

    Trabaja trabajo = trabajaService.findByPK(KeyFactory.stringToKey(id_trabaja) );
    Finca finca = fincaService.buscar2(nombref);
    Key id_finca=finca.getId_finca();
    trabajo.setFinca(id_finca);

    return "redirect:listadotrabajo";
   }

   @RequestMapping(value = "/anadir_personal", method = RequestMethod.GET)
   public String doAñadirPersonal(@RequestParam("id_trabaja") String id_trabaja,
                                  @RequestParam("dni") String dni,
                                   Model model){

   Trabaja trabajo = trabajaService.findByPK(KeyFactory.stringToKey(id_trabaja) );
   //Camarero cam = camareroService.findByPK(KeyFactory.stringToKey(id));
   List<Camarero> cam =camareroService.buscar(4, dni);
   //Key id_cam = cam.getId();
   //trabajo.setCamtrabaja(id_cam);
   if(!cam.isEmpty()){
       for(Camarero c:cam){
           Key miKey=c.getId();
           trabajo.setCamtrabaja(miKey);
       } 
        return "redirect:listadotrabajo";
   }
    return "redirect:error.html";


  
   }


   @RequestMapping(value = "/borrar_trabajo", method = RequestMethod.POST)
   public String doBorrarTrabaja(@RequestParam("id_trabaja") String id_trabaja, Model model) {
       Trabaja trabajo = trabajaService.findByPK(KeyFactory.stringToKey(id_trabaja) );
       trabajaService.remove(trabajo.getId_trabaja());
       return "redirect:listadotrabajo";
    }


}
